package com.hwpt.utils;

import org.springframework.security.crypto.scrypt.SCryptPasswordEncoder;
import org.springframework.stereotype.Component;

/**
 * SCrypt加密解密工具类
 */

@Component
public class SCryptUtil {

    private static final SCryptPasswordEncoder encoder = new SCryptPasswordEncoder(
        16,  // CPU成本参数
        4,      // 内存成本参数
        1,      // 并行化参数
        2,     // 密钥长度
        2      // 盐值长度
    );

    /**
     * 加密密码
     * @param rawPassword 原始密码
     * @return 加密后的密码
     */
    public String encrypt(String rawPassword) {
        return encoder.encode(rawPassword);
    }

    /**
     * 验证密码
     * @param rawPassword 原始密码（用户输入）
     * @param encodedPassword 已加密的密码（数据库存储）
     * @return 验证结果
     */
    public boolean decrypt(String rawPassword, String encodedPassword) {
        return encoder.matches(rawPassword, encodedPassword);
    }

    /**
     * 验证密码（别名方法，与decrypt功能相同）
     */
    public boolean verify(String rawPassword, String encodedPassword) {
        return decrypt(rawPassword, encodedPassword);
    }
}